package com.deer.wms.ASN.manage.dao;

import com.deer.wms.ASN.manage.model.asn.AsnMaster;
import com.deer.wms.ASN.manage.model.asn.AsnMasterCriteria;
import com.deer.wms.ASN.manage.model.asn.AsnMasterDto;
import com.deer.wms.project.root.mapper.SuperMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author guo
 */
public interface AsnMasterMapper extends SuperMapper<AsnMaster> {

    /**
     * 按照criteria条件查询
     * @param criteria criteria
     * @return List<AsnMasterDto>
     */
    List<AsnMasterDto> findList(AsnMasterCriteria criteria);

    List<AsnMasterDto> findPdaList(AsnMasterCriteria criteria);

    /**
     * 通过单据号删除
     * @param billNo 入库单号
     */
    void deleteByBillNo(@Param("billNo") String billNo);

    /**
     * 通过采购单号删除
     * @param requestBuyBillNo 采购单号
     */
    void deleteByRequestBuyNo(@Param("requestBuyBillNo") String requestBuyBillNo);

    /**
     * 通过单据号查询
     * @param billNo 单据号
     * @return AsnMasterDto
     */
    AsnMasterDto findByBillNo(@Param("billNo") String billNo);

    /**
     * 通过
     * @param billNo 单据号
     * @param wareCode 仓库编码
     * @return AsnMaster
     */
    AsnMaster findSoByBillNo(@Param("billNo") String billNo, @Param("wareCode") String wareCode);

    /**
     * 按照criteria条件查询先发配件入库信息
     * @param criteria criteria
     * @return List<AsnMasterDto>
     */
    List<AsnMasterDto> findList2(AsnMasterCriteria criteria);

    /**
     * 通过criteria条件查询需要质检的单据
     * @param criteria
     * @return
     */
    List<AsnMasterDto> findQcList(AsnMasterCriteria criteria);

    void updateQcState(String billNo, int qcState);

}
